import '../bar/bar_entity.dart';
import '../line/line_entity.dart';

/// 图表数据
///
/// 如果设置了多个轴，用[yAxisType]指定当前数据使用哪个轴作为依照
class ChartData<T> {
  const ChartData(
      {this.data, this.yAxisType = YAxisType.start, this.drawWithAnim = true});

  final T? data;
  final YAxisType yAxisType;

  /// 绘制时是否伴随动画
  final bool drawWithAnim;
}

/// 图表类型
enum ChartType {
  /// 柱状图
  bar,

  /// 折线图
  line
}

/// Y轴类型
enum YAxisType {
  /// 起始处Y轴
  start,

  /// 结束位置Y轴
  end
}

/// 组合图数据
class CombinedData {
  const CombinedData(
      {this.lineData,
      this.barData,
      this.drawOrder = const [ChartType.bar, ChartType.line]});

  /// 折线图数据
  final ChartData<List<LineData>>? lineData;

  /// 柱状图数据
  final ChartData<BarData>? barData;

  /// 图表的绘制顺序,此数据为空时，数据不绘制
  final List<ChartType> drawOrder;
}
